home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 051-060 / amok52 / abitur / txt / zeugnis.mod < prev    next >
Text File  |  1993-11-04  |  5KB  |  236 lines

  1. IMPLEMENTATION MODULE Zeugnis;
  2.  
  3. FROM Globals IMPORT Spieler, SpielerPtr, AlleSpieler, AnzahlSpieler;
  4. FROM Intuition IMPORT WindowPtr, RefreshWindowFrame;
  5. FROM AbiturScreen IMPORT OpenTextWindow, WaitCloseGadget,
  6.                          roT, weisS, dgraU, schwarZ, blaU;
  7. FROM Graphics IMPORT RastPortPtr, Move, Draw, Text, SetAPen,
  8.                      ClearScreen, jam2, SetBPen, SetDrMd, SetSoftStyle,
  9.                      AskSoftStyle, FontStyleSet, FontStyles;
  10. FROM Str IMPORT Length;
  11. FROM Conversions IMPORT ValToStr; (* für Jahr und Anzahl Absenzen *)
  12. FROM SYSTEM IMPORT ADR;
  13. FROM FaecherNamen IMPORT FaecherNamen, FaecherTypen;
  14. FROM NoteConversions IMPORT NoteToString;
  15. FROM BerechneSchnitt IMPORT BerechneSchnitt;
  16.  
  17.  
  18. VAR RP: RastPortPtr;
  19.  
  20.  
  21. PROCEDURE Vorgedruckt;
  22. VAR AMaske, NMaske: FontStyleSet;
  23. BEGIN
  24.    AMaske := AskSoftStyle(RP);
  25.    NMaske := SetSoftStyle(RP, FontStyleSet{}, AMaske);
  26.    SetAPen(RP, schwarZ)
  27. END Vorgedruckt;
  28.  
  29.  
  30.  
  31. PROCEDURE VonHand;
  32. VAR AMaske, NMaske: FontStyleSet;
  33. BEGIN
  34.    AMaske := AskSoftStyle(RP);
  35.    NMaske := SetSoftStyle(RP, FontStyleSet{italic}, AMaske);
  36.    SetAPen(RP, blaU)
  37. END VonHand;
  38.  
  39.  
  40.  
  41. CONST Bund1 =  6;
  42.       Bund2 = 90;
  43.       Bund3 =135;
  44.       Bund4 =190;
  45.  
  46.  
  47.  
  48. PROCEDURE ZeigSchuelerZeugnis(Nr: INTEGER);
  49.    (* Zeigt das Zeugnis und wartet auf CloseGadget *)
  50.    (* Die nummer 1 ist der erste Schüler in der Liste *)
  51. VAR SZeig: SpielerPtr;
  52.     i: INTEGER;
  53.     W: WindowPtr;
  54.     str: ARRAY[0..6] OF CHAR; (* ValToStr *)
  55.     err: BOOLEAN;
  56.     h: INTEGER;
  57.     F: FaecherTypen;
  58.     ZZNote: REAL;
  59. BEGIN
  60.    IF Nr > AnzahlSpieler THEN RETURN END;
  61.    IF Nr < 1 THEN RETURN END;
  62.  
  63.   (* Finde Schüler *)
  64.    SZeig := AlleSpieler;
  65.    IF Nr > 1 THEN
  66.       FOR i := 1 TO Nr -1 DO
  67.           SZeig := SZeig^.Next
  68.       END
  69.    END;
  70.  
  71.    BerechneSchnitt(SZeig);
  72.  
  73.    W := OpenTextWindow(300, 214);
  74.    RP := W^.rPort;
  75.    Move(RP, 0, 0);
  76.    SetBPen(RP, weisS);
  77.    SetDrMd(RP, jam2);
  78.    ClearScreen(RP);
  79.    RefreshWindowFrame(W);
  80.  
  81.  
  82. (** NAME *)
  83.  
  84.    Vorgedruckt;
  85.    Move(RP, Bund1, 22);
  86.    Text(RP, ADR("NAME:"), 4);
  87.    VonHand;
  88.    Move(RP, Bund1 + 42, 22);
  89.    Text(RP, ADR(SZeig^.Name), Length(SZeig^.Name));
  90.  
  91.  
  92. (* Absolviert oder Schüler oder Herausgefallen *)
  93.    VonHand;
  94.    Move(RP, Bund4, 22);
  95.    IF SZeig^.Jahr = 5 THEN
  96.       Text(RP, ADR("Absolviert"), 10)
  97.    ELSIF SZeig^.Jahr = 6 THEN
  98.       SetAPen(RP, roT);
  99.       Text(RP, ADR("Geflogen"), 8)
  100.    ELSE
  101.       Text(RP, ADR("Schüler(in)"), 11)
  102.    END;
  103.  
  104.  
  105. (** PROFI **)
  106.    Vorgedruckt;
  107.    Move(RP, Bund4, 110);
  108.    Text(RP, ADR("Provi"), 5);
  109.    VonHand;
  110.    Move(RP, Bund4, 121);
  111.    IF ODD(SZeig^.Provisorisch) THEN
  112.       SetAPen(RP, roT);
  113.       Text(RP, ADR("Ja"), 2)
  114.    ELSE
  115.       Text(RP, ADR("Nein"), 4)
  116.    END;
  117.  
  118. (** Gefährdet **)
  119.    Vorgedruckt;
  120.    Move(RP, Bund4, 143);
  121.    Text(RP, ADR("Gefährdet"), 9);
  122.    VonHand;
  123.    Move(RP, Bund4, 154);
  124.    IF SZeig^.Provisorisch >= 5 THEN
  125.       SetAPen(RP, roT);
  126.       Text(RP, ADR("Ja"), 2)
  127.    ELSE
  128.       Text(RP, ADR("Nein"), 4)
  129.    END;
  130.  
  131. (** Absenzen **)
  132.    Vorgedruckt;
  133.    Move(RP, Bund4, 77);
  134.    Text(RP, ADR("Absenzen"), 8);
  135.    VonHand;
  136.    Move(RP, Bund4, 88);
  137.    ValToStr(SZeig^.Absenzen, FALSE, str, 10, 3, " ", err);
  138.    IF NOT err THEN
  139.       Text(RP, ADR(str), Length(str))
  140.    END;
  141.  
  142.  
  143. (** Jahr **)
  144.  IF SZeig^.Jahr < 5 THEN
  145.    Vorgedruckt;
  146.    Move(RP, Bund4, 176);
  147.    Text(RP, ADR("Jahr"), 4);
  148.    VonHand;
  149.    Move(RP, Bund4, 187);
  150.    ValToStr(SZeig^.Jahr, FALSE, str, 10, 3, " ", err);
  151.    IF NOT err THEN
  152.       Text(RP, ADR(str), Length(str))
  153.    END
  154.  END;
  155.  
  156. (* Schnitt *)
  157.    Vorgedruckt;
  158.    Move(RP, Bund4, 44);
  159.    Text(RP, ADR("Schnitt"), 7);
  160.    VonHand;
  161.    Move(RP, Bund4, 55);
  162.    NoteToString(SZeig^.Zeugnis.GesammtSchnitt , TRUE, str);
  163.    Text(RP, ADR(str), Length(str));
  164.  
  165. (* Zeugnis Fächer Namen *)
  166.    Vorgedruckt;
  167.    Move(RP, Bund1, 44);
  168.    Text(RP, ADR("Fächer"), 6);
  169.    h := 55;
  170.    FOR F := Turnen TO Informatik DO
  171.       SetAPen(RP, dgraU);
  172.       Move(RP, Bund1, h);
  173.       Text(RP, ADR(FaecherNamen[F].VollName),
  174.                Length(FaecherNamen[F].VollName));
  175.       INC(h, 11)
  176.    END;
  177.  
  178. (* Vornoten *)
  179.    Vorgedruckt;
  180.    Move(RP, Bund2, 44);
  181.    Text(RP, ADR("VNote"), 5);
  182.    h := 55;
  183.    VonHand;
  184.    FOR F := Turnen TO Informatik DO
  185.       Move(RP, Bund2, h);
  186.       NoteToString(SZeig^.Zeugnis.VorNote[F], FALSE, str);
  187.       Text(RP, ADR(str), 3);
  188.       INC(h, 11)
  189.    END;
  190.  
  191.  
  192. (* Laufende oder SchlussNoten *)
  193.    IF SZeig^.Jahr >= 5 THEN
  194. (** Absolviert SchlussNoten *)
  195.       Vorgedruckt;
  196.       Move(RP, Bund3, 44);
  197.       Text(RP, ADR("Schluß"), 6);
  198.       h := 55;
  199.       VonHand;
  200.       FOR F := Turnen TO Informatik DO
  201.          Move(RP, Bund3, h);
  202.          NoteToString(SZeig^.Zeugnis.Schnitt[F] , TRUE, str);
  203.          Text(RP, ADR(str), 4);
  204.          INC(h, 11)
  205.       END
  206.  
  207.    ELSE
  208. (* Laufende Noten *)
  209.       Vorgedruckt;
  210.       Move(RP, Bund3, 44);
  211.       Text(RP, ADR("Akt"), 3);
  212.       h := 55;
  213.       VonHand;
  214.       FOR F := Turnen TO Informatik DO
  215.          Move(RP, Bund3, h);
  216.          IF SZeig^.Zeugnis.AnzInSumme[F] = 0 THEN
  217.             Text(RP, ADR("---"), 3)
  218.          ELSE
  219.             ZZNote := SZeig^.Zeugnis.AktuelleSumme[F] /
  220.                       FLOAT(SZeig^.Zeugnis.AnzInSumme[F]);
  221.             NoteToString(ZZNote , TRUE, str);
  222.             Text(RP, ADR(str), Length(str))
  223.          END;
  224.          INC(h, 11)
  225.       END;
  226.  
  227.    END;
  228.    WaitCloseGadget(W)
  229. END ZeigSchuelerZeugnis;
  230.  
  231.  
  232.  
  233. BEGIN
  234. END Zeugnis.
  235.  
  236.